#include<iostream>
#include<cstdio>
#include<vector>
#include<functional>
#include<unistd.h>
#include<signal.h>
#include<sys/types.h>
#include<wait.h>


//测试 Core 标志位
int main()
{
    pid_t id = fork();    //创建子进程
    if(id == 0)
    {
        sleep(2);
        printf("hello lcx!\n");
        printf("hello lcx!\n");
        printf("hello lcx!\n");
        printf("hello lcx!\n");
        printf("hello lcx!\n");
        int a = 10;
        a /= 0;
        printf("hello lcx!\n");
        printf("hello lcx!\n");
        printf("hello lcx!\n");
        printf("hello lcx!\n");

        exit(1);
    }
    //父进程
    int status = 0;
    waitpid(id,&status,0);       //等待  id   状态码status    等待方式 0
    printf("signal:%d,exit code:%d,core dump:%d\n",(status & 0x7F),(status>>8)&0xFF,(status>>7)&0x1);
    //  status & 0x7F 表示  信号码的 低 7个比特位     0x   7个1
    //  退出码 就是次低八位      0x全1          
    //  把七个比特位移走    core dump  就是最低的比特位   只需要 & 1

    //ulimit -c 大小/unlimited      打开core的情况下     core dump输出1
    // 最终输出：signal:8,exit code:0,core dump:1

    //ulimit -c 0      关闭core的情况下    core dump输出0
    // 最终输出：signal:8,exit code:0,core dump:0
}



// int main()
// {
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     int a = 6;
//     a/=0;
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     printf("Hello  world！\n");
//     return 0;
// }

